package dao;

import conn.ConData;
import model.Indent;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class IndentDao {
    Connection con=null;//连接数据库对象  默认值为空
    ConData conn=new ConData();//连接数据库驱动

    /**
     * 给indent表添加数据
     * @param indent 实体
     * @return
     */
    public int add(Indent indent){//参数类型 参数名  向方法里传参
        int num=0;//添加不成功
        //创建sql语句
        String sql="INSERT INTO indent (indentid2,suppliername,sender,sendtime,requirementlist,needtime,explainn) VALUE(?,?,?,?,?,?,?)";
        //创建执行sql的对象A
        PreparedStatement ps;//带参数的执行sql语句对象
        try {
            //输出indent的id2方法的值
            System.out.println(indent.getIndentid2());
            System.out.println(indent.getRequirementlist());
            System.out.println(indent.getExplainn());
            //调用连接数据库的方法
            con=conn.getCon();
            //返回一个PreparedStatement实例
            ps=con.prepareStatement(sql);


            ps.setString(1 , indent.getIndentid2());
            ps.setString(2, indent.getSuppliername());
            ps.setString(3, indent.getSender());
            ps.setString(4, indent.getSendtime());
            ps.setString(5 , indent.getRequirementlist());
            ps.setString(6 , indent.getNeedtime());
            ps.setString(7 , indent.getExplainn());

            num=ps.executeUpdate();//执行sql语句
            //关闭执行对象
            ps.close();
            con.close();
        }catch(SQLException e){
            e.printStackTrace();
        }
        return num;
    }


    /**
     * 根据主键更新信息
     * @param indent
     * @return
     */

    public int update(Indent indent){
        System.out.println("进入执行更新sql语句方法");
        int isSuccess=0;//修改未成功
        String sql="UPDATE indent SET indentid2=?,suppliername=?,sender=?,sendtime=?,requirementlist=?,needtime=?,explainn=? WHERE indentid=?";//修改语句
        PreparedStatement ps;
        try{
            //调用连接数据库的方法
            con=conn.getCon();
            //返回一个PrepareStatement实例
            ps=con.prepareStatement(sql);


            ps.setString(1 , indent.getIndentid2());
            ps.setString(2, indent.getSuppliername());
            ps.setString(3, indent.getSender());
            ps.setString(4, indent.getSendtime());
            ps.setString(5 , indent.getRequirementlist());
            ps.setString(6 , indent.getNeedtime());
            ps.setString(7 , indent.getExplainn());
            ps.setInt(8 , indent.getIndentid());

            //执行修改
            isSuccess=ps.executeUpdate();
            //关闭执行对象
            ps.close();
            con.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
        return isSuccess;
    }


    /*
     * 根据主键删除信息
     * */

    public int del(Indent indent){
        int isDel=0;//删除未成功
        //创建执行sql语句
        String sql="DELETE FROM indent WHERE indentid=?";
        //创建执行sql的对象
        PreparedStatement ps;
        try{
            con=conn.getCon();
            ps=con.prepareStatement(sql);
            //设置删除条件
            ps.setInt(1, indent.getIndentid());
            //删除
            isDel=ps.executeUpdate();
            //关闭执行对象
            ps.close();
            //关闭连接对象
            con.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
        return isDel;
    }


    /*
     * 根据查询条件返回查询结果
     *
     * */
    public List<Indent> getAll(Indent indent){
        System.out.println("进入查询方法");
        List<Indent> listIndent=new ArrayList<Indent>();
        //创建sql字符串
        String str="SELECT * FROM indent ";
        int Indentid=0;
        con=conn.getCon();
        try{
            //创建执行sql的对象
            PreparedStatement ps=con.prepareStatement(str);
            System.out.println("查询语句:"+str);
            //设置查询条件
            //返回查询记录结果的记录集
            ResultSet rs=ps.executeQuery();

            //将记录集存入集合当中
            while(rs.next()){
                //声明一个实体对象
                Indent b=new Indent();
                //给对象赋值
                b.setIndentid(rs.getInt(1));
                b.setIndentid2(rs.getString(2));
                b.setSuppliername(rs.getString(3));
                b.setSender(rs.getString(4));
                b.setSendtime(rs.getString(5));
                b.setRequirementlist(rs.getString(6));
                b.setNeedtime(rs.getString(7));
                b.setExplainn(rs.getString(8));
                //将对象实体添加到集合中
                listIndent.add(b);

            }
            //关闭记录集
            rs.close();
            //关闭执行的sql对象
            ps.close();
            //关闭连接
            con.close();

        }catch(SQLException e){
            e.printStackTrace();
        }
        System.out.println(listIndent);
        return listIndent;
    }



    public List<Indent> getDan(Indent indent){
        System.out.println("进入单项查询方法");
        List<Indent> listIndent=new ArrayList<Indent>();
        //创建sql字符串
        String str="SELECT * FROM indent WHERE suppliername=? ";
        int Indentid=0;
        con=conn.getCon();
        try{
            //创建执行sql的对象
            PreparedStatement ps=con.prepareStatement(str);
            System.out.println("查询语句:"+str);
            //设置查询条件
            ps.setString(1,indent.getSuppliername());
            //返回查询记录结果的记录集
            ResultSet rs=ps.executeQuery();

            //将记录集存入集合当中
            while(rs.next()){
                //声明一个实体对象
                Indent b=new Indent();
                //给对象赋值
                b.setIndentid(rs.getInt(1));
                b.setIndentid2(rs.getString(2));
                b.setSuppliername(rs.getString(3));
                b.setSender(rs.getString(4));
                b.setSendtime(rs.getString(5));
                b.setRequirementlist(rs.getString(6));
                b.setNeedtime(rs.getString(7));
                b.setExplainn(rs.getString(8));
                //将对象实体添加到集合中
                listIndent.add(b);

            }
            //关闭记录集
            rs.close();
            //关闭执行的sql对象
            ps.close();
            //关闭连接
            con.close();

        }catch(SQLException e){
            e.printStackTrace();
        }
        System.out.println(listIndent);
        return listIndent;
    }


    public List<Indent> getAddc(Indent indent){
        System.out.println("更改中根据ID进行查询");
        List<Indent> listIndent=new ArrayList<Indent>();
        //创建sql字符串
        String str="SELECT * FROM indent WHERE indentid=? ";
        con=conn.getCon();
        try{
            //创建执行sql的对象
            PreparedStatement ps=con.prepareStatement(str);
            System.out.println("查询语句:"+str);
            //设置查询条件
            ps.setInt(1, indent.getIndentid());
            //返回查询记录结果的记录集
            ResultSet rs=ps.executeQuery();

            //将记录集存入集合当中
            while(rs.next()){
                //声明一个实体对象
                Indent b=new Indent();
                //给对象赋值
                b.setIndentid(rs.getInt(1));
                b.setIndentid2(rs.getString(2));
                b.setSuppliername(rs.getString(3));
                b.setSender(rs.getString(4));
                b.setSendtime(rs.getString(5));
                b.setRequirementlist(rs.getString(6));
                b.setNeedtime(rs.getString(7));
                b.setExplainn(rs.getString(8));
                //将对象实体添加到集合中
                listIndent.add(b);

            }
            //关闭记录集
            rs.close();
            //关闭执行的sql对象
            ps.close();
            //关闭连接
            con.close();

        }catch(SQLException e){
            e.printStackTrace();
        }
        System.out.println(listIndent);
        return listIndent;
    }
}
